﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SoftwareConsulting.Interfaces.BasicEntities;

namespace SoftwareConsulting.BI11.Studio.BasicEntities
{   
    /// <summary>
    /// Класс нечто уникального поименованного
    /// </summary>
    [Serializable]
    public abstract class Named : UniqueChild, INamed
    {     
        private string _name; //название

        /// <summary>
        /// Возвращает как строку (т.е. имя)
        /// </summary>
        /// <returns></returns>
        override public string ToString()
        {
            return _name;
        }

        /// <summary>
        /// Возвращает название
        /// </summary>        
        virtual public string Name
        {
            get
            {
                return _name;
            }            
        }

        /// <summary>
        /// Устанавливает название
        /// </summary>
        /// <param name="newName"></param>
        virtual public void SetName(string newName)
        {
            _name = newName;
        }

        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="owner"></param>
        protected Named(INamed owner):base(owner)
        {            
        }
        
        /// <summary>
        /// Конструктор класса по умолчанию
        /// </summary>
        protected Named()
            : base()
        {         
        }        
    }
}
